package jp.co.menox.controller.tmserver.borrow;

import java.util.List;
import java.util.Map;

import jp.co.menox.controller.tmserver.TmServerControllerBase;
import jp.co.menox.tmcommon.model.LendingHistory;
import jp.co.menox.tmserver.service.CategoryService;
import jp.co.menox.tmserver.service.LendingHistoryService;
import jp.co.menox.tmserver.service.LendingService;
import jp.co.menox.tmserver.service.StatusService;

import org.slim3.controller.Navigation;

/**
 * 借入状況確認画面
 * @author
 *
 */
public class BorrowingHistorySearchController extends TmServerControllerBase {

    protected LendingService service;
    protected CategoryService categoryService;
    protected StatusService statusService;
    protected LendingHistoryService lendingHistoryService;
    {
        service = new LendingService();
        categoryService = new CategoryService();
        statusService = new StatusService();
        lendingHistoryService = new LendingHistoryService();
    }

    @Override
    public Navigation run() throws Exception {
        
        // 借用者のユーザーID
        long loginUserId = this.<Long>sessionScope("UserId");        
                
        // 表示用リストを取得する
        List<LendingHistory> modelList;
        
        // 借用者ユーザーIDから借りているものを検索する
        modelList = lendingHistoryService.getBorrowingHistoryList(loginUserId);       
        
        // 表示用mapの取得
        Map<Long, String> categoryMap = categoryService.getCategoryMap();
        Map<Long, String> userMap = userService.getUserMap();
        Map<Integer, String> statusMap = statusService.getStatusMap();
        Map<Long, String> lendingNameMap = lendingHistoryService.getLendingNameMap();
        Map<Long, String> lendingCommentMap = lendingHistoryService.getLendingCommentMap();
        Map<Long, String> lendingCategoryMap = lendingHistoryService.getLendingCategoryMap();
        
        // 表示用変数設定
        requestScope("lendingHList", modelList);
        requestScope("cateMap", categoryMap);
        requestScope("userMap", userMap);
        requestScope("statusMap", statusMap);
        requestScope("lendingNameMap", lendingNameMap);
        requestScope("lendingCommentMap", lendingCommentMap);
        requestScope("lendingCategoryMap", lendingCategoryMap);

        // TODOF: ステータスが返却済みなども表示するか？表示すると未来永劫表示される。
        
        // TODOF: 今回は、テーブル連携は全部MAPで対応。データ量が多くなると破綻するので本格対応は別途必要。
        
        return forward("borrowingHistorySearch.jsp");
    }
}
